home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Developer Toolbox 6.1
/
SGI Developer Toolbox 6.1 - Disc 4.iso
/
public
/
Xprof
/
xmeasure
/
tstwins.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-08-01
|
14KB
|
562 lines
/*==================================================================
* File : tstwins.c
* Package: Xmeasure
*
* Author : Aloke Gupta.
*
* (C) Copyright 1992, Aloke Gupta.
* All rights granted to University of Illinois Board of Regents.
*==================================================================*/
#include "perf.h"
/* Number of subwindows for some tests */
#define NUMSUBWINDOWS 8
#define SUBWINHEIGHT 32
#define SUBWINWIDTH 32
#define SEPARATION 3
/* Shared variables */
static int i;
static Window window;
static Window *winarray;
static XSetWindowAttributes xswa;
static XWindowAttributes xwa;
/* ====================================================================== */
int CreateWindow(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++) {
window = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
/* XMapWindow(xd->display, window); */
}
}
int i_CreateWindow(xd, xp)
XD *xd;
XParams *xp;
{ /* nothing to initialize */ }
int c_CreateWindow(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
}
/* ====================================================================== */
int ChangeWindowAttributes(xd, xp)
XD *xd;
XParams *xp;
{
unsigned long valuemask=0;
valuemask = CWBitGravity | CWEventMask;
xswa.bit_gravity = NorthWestGravity;
xswa.event_mask = ButtonPressMask;
for (i = 0; i < xp->itns; i++)
XChangeWindowAttributes(xd->display, window,valuemask,&xswa);
}
int i_ChangeWindowAttributes(xd, xp)
XD *xd;
XParams *xp;
{
window = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
XMapWindow(xd->display, window);
}
int c_ChangeWindowAttributes(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
}
/* ====================================================================== */
int GetWindowAttributes(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++)
XGetWindowAttributes(xd->display, xd->window, &xwa);
}
int i_GetWindowAttributes(xd, xp)
XD *xd;
XParams *xp;
{
}
int c_GetWindowAttributes(xd, xp)
XD *xd;
XParams *xp;
{
}
/* ====================================================================== */
int DestroyWindow(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++)
XDestroyWindow(xd->display, winarray[i]);
}
int i_DestroyWindow(xd, xp)
XD *xd;
XParams *xp;
{
winarray = (Window *) malloc(xp->itns * sizeof(Window) );
for (i = 0; i < xp->itns; i++) {
winarray[i] = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
}
}
int c_DestroyWindow(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
free(winarray);
}
/* ====================================================================== */
/* This function is tricky since it will be have variable execution time
* depending on the number of subwindows in practice.
*/
int DestroySubwindows(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++)
XDestroySubwindows(xd->display, winarray[i]);
}
int i_DestroySubwindows(xd, xp)
XD *xd;
XParams *xp;
{
int num; /* Count of number of subwindows to create */
winarray = (Window *) malloc(xp->itns * sizeof(Window) );
for (i = 0 ; i < xp->itns; i++) {
winarray[i] = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
DISPWIDTH, DISPHEIGHT, 1, xd->foreground, xd->background);
for (num = 0; num < NUMSUBWINDOWS; num++)
window = XCreateSimpleWindow(xd->display, winarray[i], 0, 0,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
}
}
int c_DestroySubwindows(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
free(winarray);
}
/* ====================================================================== */
int ChangeSaveSet(xd, xp)
XD *xd;
XParams *xp;
{
}
int i_ChangeSaveSet(xd, xp)
XD *xd;
XParams *xp;
{
}
int c_ChangeSaveSet(xd, xp)
XD *xd;
XParams *xp;
{
}
/* ====================================================================== */
int ReparentWindow(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++)
XReparentWindow(xd->display, winarray[i], xd->window, 0, 0);
}
int i_ReparentWindow(xd, xp)
XD *xd;
XParams *xp;
{
window = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
winarray = (Window *) malloc(xp->itns * sizeof(Window) );
for (i = 0; i < xp->itns; i++)
winarray[i] = XCreateSimpleWindow(xd->display, window, 0, 0,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
}
int c_ReparentWindow(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
free(winarray);
}
/* ====================================================================== */
int MapWindow(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++)
XMapWindow(xd->display, winarray[i]);
}
int i_MapWindow(xd, xp)
XD *xd;
XParams *xp;
{
int xoffset=SEPARATION, yoffset=SEPARATION;
winarray = (Window *) malloc(xp->itns * sizeof(Window) );
for (i = 0; i < xp->itns; i++) {
winarray[i] = XCreateSimpleWindow(xd->display, xd->window,
xoffset, yoffset, SUBWINWIDTH, SUBWINHEIGHT, 1,
xd->foreground, xd->background);
yoffset += SUBWINHEIGHT + SEPARATION;
if (yoffset > (DISPHEIGHT - SUBWINHEIGHT)) {
yoffset = SEPARATION;
xoffset += SUBWINWIDTH + SEPARATION;
if (xoffset > (DISPWIDTH - SUBWINWIDTH))
xoffset = SEPARATION;
}
}
}
int c_MapWindow(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
free(winarray);
}
/* ====================================================================== */
/* This function is tricky since it will be have variable execution time
* depending on the number of subwindows in practice.
*/
int MapSubwindows(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++)
XMapSubwindows(xd->display, winarray[i]);
}
int i_MapSubwindows(xd, xp)
XD *xd;
XParams *xp;
{
int num; /* Count of number of subwindows to create */
int winx = SEPARATION, winy= SEPARATION; /* Coordinates of high level
window */
int xoffset = SEPARATION, yoffset = SEPARATION;
int xsize, ysize; /* Size of the little subwindows */
xsize = SUBWINWIDTH / NUMSUBWINDOWS;
ysize = SUBWINHEIGHT / NUMSUBWINDOWS;
winarray = (Window *) malloc(xp->itns * sizeof(Window) );
for (i = 0 ; i < xp->itns; i++) {
winarray[i] = XCreateSimpleWindow(xd->display, xd->window, winx, winy,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
winy += SUBWINHEIGHT + SEPARATION;
if (winy > (DISPHEIGHT - SUBWINHEIGHT)) {
winy = SEPARATION;
winx += SUBWINWIDTH + SEPARATION;
if (winx > (DISPWIDTH - SUBWINWIDTH))
winx = SEPARATION;
}
XMapWindow(xd->display, winarray[i]);
xoffset=SEPARATION; yoffset=SEPARATION;
for (num = 0; num < NUMSUBWINDOWS; num++) {
window = XCreateSimpleWindow(xd->display, winarray[i],
xoffset,yoffset,xsize,ysize,1,xd->foreground,xd->background);
yoffset += ysize + SEPARATION;
if (yoffset > (SUBWINHEIGHT - ysize)) {
yoffset = SEPARATION;
xoffset += xsize + SEPARATION;
if (xoffset > (SUBWINWIDTH - xsize))
xoffset = SEPARATION;
}
}
}
}
int c_MapSubwindows(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
free(winarray);
}
/* ====================================================================== */
int UnmapWindow(xd, xp)
XD *xd;
XParams *xp;
{
for (i = xp->itns; i > 0 ; i--) /* Unmap in reverse order of creation */
XUnmapWindow(xd->display, winarray[i-1]);
}
int i_UnmapWindow(xd, xp)
XD *xd;
XParams *xp;
{
int xoffset=SEPARATION, yoffset=SEPARATION;
winarray = (Window *) malloc(xp->itns * sizeof(Window) );
for (i = 0; i < xp->itns; i++) {
winarray[i] = XCreateSimpleWindow(xd->display, xd->window,
xoffset, yoffset, SUBWINWIDTH, SUBWINHEIGHT,
1, xd->foreground, xd->background);
yoffset += SUBWINHEIGHT + SEPARATION;
if (yoffset > (DISPHEIGHT - SUBWINHEIGHT)) {
yoffset = SEPARATION;
xoffset += SUBWINWIDTH + SEPARATION;
if (xoffset > (DISPWIDTH - SUBWINWIDTH))
xoffset = SEPARATION;
}
XMapWindow(xd->display, winarray[i]);
}
}
int c_UnmapWindow(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
free(winarray);
}
/* ====================================================================== */
int UnmapSubwindows(xd, xp)
XD *xd;
XParams *xp;
{
for (i = xp->itns; i > 0 ; i--){ /* Unmap in reverse order of creation */
XUnmapSubwindows(xd->display, winarray[i-1]);
XUnmapWindow(xd->display, winarray[i-1]);
}
}
int i_UnmapSubwindows(xd, xp)
XD *xd;
XParams *xp;
{
int num; /* Count of number of subwindows created */
int winx = SEPARATION, winy = SEPARATION; /* Coordinates of high level
window */
int xoffset = SEPARATION, yoffset = SEPARATION;
int xsize, ysize; /* Size of the little subwindows */
xsize = SUBWINWIDTH / NUMSUBWINDOWS;
ysize = SUBWINHEIGHT / NUMSUBWINDOWS;
winarray = (Window *) malloc(xp->itns * sizeof(Window) );
for (i = 0 ; i < xp->itns; i++) {
winarray[i] = XCreateSimpleWindow(xd->display, xd->window, winx, winy,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
winy += SUBWINHEIGHT + SEPARATION;
if (winy > (DISPHEIGHT - SUBWINHEIGHT)) {
winy = SEPARATION;
winx += SUBWINWIDTH + SEPARATION;
if (winx > (DISPWIDTH - SUBWINWIDTH))
winx = SEPARATION;
}
XMapWindow(xd->display, winarray[i]);
xoffset = yoffset = SEPARATION;
for (num = 0; num < NUMSUBWINDOWS; num++) {
window = XCreateSimpleWindow(xd->display, winarray[i],
xoffset, yoffset, xsize, ysize,1,xd->foreground,xd->background);
yoffset += ysize + SEPARATION;
if (yoffset > (SUBWINHEIGHT - ysize)) {
yoffset = SEPARATION;
xoffset += xsize + SEPARATION;
if (xoffset > (SUBWINWIDTH - xsize))
xoffset = SEPARATION;
}
XMapWindow(xd->display, window);
}
XMapSubwindows(xd->display, winarray[i]);
}
}
int c_UnmapSubwindows(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
free(winarray);
}
/* ====================================================================== */
static unsigned int changemask;
static XWindowChanges changes;
int ConfigureWindow(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++) {
if ((i %2) == 0) {
changes.x = changes.y = 1;
changes.width = SUBWINWIDTH / 2;
changes.height = SUBWINHEIGHT / 2;
changes.border_width = 2;
changes.stack_mode = Above;
}
else
{
changes.x = changes.y = 0;
changes.width = SUBWINWIDTH ;
changes.height = SUBWINHEIGHT;
changes.border_width = 4;
changes.stack_mode = Below;
}
XConfigureWindow(xd->display, window, changemask, &changes);
}
}
int i_ConfigureWindow(xd, xp)
XD *xd;
XParams *xp;
{
window = XCreateSimpleWindow(xd->display, xd->window, 0, 0,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
XMapWindow(xd->display, window);
changemask = CWX | CWY | CWStackMode | CWWidth | CWHeight | CWBorderWidth;
}
int c_ConfigureWindow(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
}
/* ====================================================================== */
int CirculateWindow(xd, xp)
XD *xd;
XParams *xp;
{
for (i = 0; i < xp->itns; i++ )
XCirculateSubwindows(xd->display, xd->window, RaiseLowest);
}
int i_CirculateWindow(xd, xp)
XD *xd;
XParams *xp;
{
int num; /* Count of number of subwindows to create */
int xoffset=0, yoffset=0;
for (num = 0; num < NUMSUBWINDOWS; num++) {
window = XCreateSimpleWindow(xd->display, xd->window, xoffset, yoffset,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
xoffset += 20;
yoffset += 20;
xoffset = xoffset % (DISPWIDTH - SUBWINWIDTH);
yoffset = yoffset % (DISPHEIGHT - SUBWINHEIGHT);
}
XMapSubwindows(xd->display, xd->window);
}
int c_CirculateWindow(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
}
/* ====================================================================== */
int GetGeometry(xd, xp)
XD *xd;
XParams *xp;
{
int x, y;
unsigned int width, height, border_width, depth;
for (i = 0; i < xp->itns; i++ )
XGetGeometry(xd->display, xd->window, &window, &x, &y, &width, &height,
&border_width, &depth);
}
int i_GetGeometry(xd, xp)
XD *xd;
XParams *xp;
{ /* Nothing to initialize */ }
int c_GetGeometry(xd, xp)
XD *xd;
XParams *xp;
{ /* Nothing to cleanup */ }
/* ====================================================================== */
int QueryTree(xd, xp)
XD *xd;
XParams *xp;
{
Window root, parent, *children;
unsigned int nchildren;
for (i = 0; i < xp->itns; i++)
XQueryTree(xd->display, xd->window,&root,&parent,&children,&nchildren);
}
int i_QueryTree(xd, xp)
XD *xd;
XParams *xp;
{
int num; /* Count of number of subwindows to create */
int xoffset=0, yoffset=0;
for (num = 0; num < NUMSUBWINDOWS; num++) {
window = XCreateSimpleWindow(xd->display, xd->window, xoffset, yoffset,
SUBWINWIDTH, SUBWINHEIGHT, 1, xd->foreground, xd->background);
xoffset += 20;
yoffset += 20;
xoffset = xoffset % (DISPWIDTH - SUBWINWIDTH);
yoffset = yoffset % (DISPHEIGHT - SUBWINHEIGHT);
}
XMapSubwindows(xd->display, xd->window);
}
int c_QueryTree(xd, xp)
XD *xd;
XParams *xp;
{
XDestroySubwindows(xd->display, xd->window);
}
/* ====================================================================== */